a = 10
b = '10'
# 强类型语言，不会隐式转换
# print(a + b)
print((type(a)))
print(str(a) + b)

# 但是可以重新赋值成其他类型
a = '哈哈哈哈'
print(type(a))
print(a + b)

# 赋值传递的是地址引用，list是可变数据类型，pop()函数不会改变其地址
c = [1]
res1 = c
print(res1)
c.pop(0)
print(res1)
# 重新赋值后，相当于开辟了一个新的内存空间
d = [1]
res2 = d
print(res2)
d = [1, 2, 3]
d.pop(0)
print(res2)

# boolean类型可以当数值使用
print(True)
print(True + 1)
print(False)
print(False + 1)

'''这是注释'''
e = '''这真的是注释吗'''
print(e)
print(type(e))

# in 和 not in 的用法
f = '123456789'
print('123' in f)
print('123' not in f)
g = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(1 in g)
print(2 not in g)

# 索引的用法
print(f[2])
print(f[-1])
print(g[0])
print(g[-2])
# 部分截取
h = f[0:2]
print(h)
i = f[:6:2]
print(i)
j = g[0:2]
print(j)
k = g[1::2]
print(k)
# 倒着截取
print(f[-1:-4:-1])
print(g[::-1])

# 运算符
# 幂运算，优先级最高
print(3 ** 2)
# 向下取整
print(11 // 3)
# 浮点数取整后还是浮点数
print(11.2 // 3)
# 除法运算后产生浮点数
print(8 / 4)
# 由于浮点数存在精度限制，和js一样，可以用round搞一下，保留固定位数
print(0.1 + 0.2)
print(round(0.1 + 0.2, 4))
# 算数运算符与赋值运算符可以一起用
l = 10
m = 2
l **= m
print(l)
